home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 02 (1982-10)(Softdisk)(Side B).zip / Softdisk Magazette Volume 2, No. 02 (1982-10)(Softdisk)(Side B).do / MORSE CODE.bas < prev    next >
BASIC Source File  |  1996-12-24  |  3KB  |  80 lines

  1. 10  POKE 16346,165: POKE 16347,0: POKE 16348,240: POKE 16349,3: POKE 16350,173: POKE 16351,48: POKE 16352,192: POKE 16353,136: POKE 16354,208
  2. 20  POKE 16355,4: POKE 16356,198: POKE 16357,1: POKE 16358,240: POKE 16359,8: POKE 16360,202: POKE 16361,208: POKE 16362,246: POKE 16363,166
  3. 30  POKE 16364,0: POKE 16365,76: POKE 16366,218: POKE 16367,63: POKE 16368,96
  4. 40  CLEAR 
  5. 50  DIM A$(48),CR$(48),CH$(48),AA$(48)
  6. 60 D = 1:F = 0:F1 = 72:F0 = 0:TN = 16346
  7. 70  HOME : PRINT  TAB( 14)"CODE TEACHER": PRINT 
  8. 80  INPUT "ENTER CODE SPEED (5 THROUGH 35 IN STEPS OF 5)>";CS
  9. 90  IF CS = 0 GOTO 180
  10. 100  IF CS = 5  THEN D0 = 85
  11. 110  IF CS = 10  THEN D0 = 42
  12. 120  IF CS = 15  THEN D0 = 25
  13. 130  IF CS = 20  THEN D0 = 17
  14. 140  IF CS = 25  THEN D0 = 13
  15. 150  IF CS = 30  THEN D0 = 10
  16. 160  IF CS = 35  THEN D0 = 8
  17. 170  GOTO 190
  18. 180  VTAB 3: CALL  -958: INPUT "ENTER SPEED VALUE (1 TO 85 )>";D0
  19. 190 D1 = D0 *3: REM ;DAH LENGTH
  20. 200  INPUT "ENTER # OF ELEMENTS/CHARACTER SPACE >";D2
  21. 210  INPUT "ENTER # OF TIMES TO REPEAT EACH LETTER ";RP
  22. 220  FOR X = 1 TO 48: READ CR$(X): NEXT 
  23. 230  FOR X = 1 TO 48: READ A$(X): NEXT 
  24. 240  PRINT "DO YOU WANT TO :"
  25. 250  PRINT "(1)INPUT THROUGH KEYBOARD"
  26. 260  PRINT "(2) ENTER PROBLEM CHARACTERS"
  27. 270  INPUT "(3) RECEIVE RADOM CHARACTERS";KB
  28. 280  ON KB GOTO 620,510,290
  29. 290  PRINT "DO YOU WANT :"
  30. 300  PRINT "(1) LETTERS"
  31. 310  PRINT "(2) LETTERS & NUMBERS"
  32. 320  INPUT "(3) LETTERS, NUMBERS & PUNTUATION ";CR: HOME 
  33. 330  IF CR = 1  THEN CR = 26
  34. 340  IF CR = 2  THEN CR = 36
  35. 350  IF CR = 3  THEN CR = 48
  36. 360 B =  INT(CR * RND(1)) +1
  37. 370  GOSUB 390: IF  PEEK( -16384) >127  THEN  POKE  -16368,0: GOTO 40
  38. 380  POKE  -16368,0: GOTO 360
  39. 390  FOR Y = 1 TO RP
  40. 400  FOR X = 1 TO  LEN(A$(B))
  41. 410 F1 =  PDL(0): POKE F,F1: REM  SET TONE
  42. 420  IF  MID$ (A$(B),X,1) = "1"  THEN  POKE D,D1: CALL TN: GOTO 440: REM  SEND A DAH
  43. 430  POKE D,D0: CALL TN: REM   ;SEND A DIT
  44. 440  POKE F,F0: POKE D,D0: CALL TN: REM  ;ELEMENT SPACE
  45. 450  NEXT 
  46. 460  FOR W = 1 TO D2 -1: REM  CHARACTER SPACE LOOP
  47. 470  POKE D,D0: CALL TN
  48. 480  NEXT 
  49. 490  PRINT CR$(B);" ";
  50. 500  NEXT : RETURN 
  51. 510 C = 0:C1 = 0: HOME 
  52. 520  PRINT : INPUT "ENTER PROBLEM CHARACTERS>";P$
  53. 530 CR =  LEN(P$)
  54. 540 C = C +1:C1 = C1 +1: IF C >CR  THEN 600
  55. 550 P1$ =  MID$ (P$,C,1)
  56. 560  FOR B = 1 TO 48
  57. 570  IF P1$ = CR$(B)  THEN CH$(C1) = P1$:AA$(C1) = A$(B): GOTO 540
  58. 580  NEXT : PRINT : PRINT P1$;" IS NOT A VALID CHARACTER"
  59. 590 C1 = C1 -1: GOTO 540
  60. 600 CR = C1 -1: FOR B = 1 TO CR
  61. 610 CR$(B) = CH$(B):A$(B) = AA$(B): NEXT : GOTO 360
  62. 620  GET AA$: IF AA$ =  CHR$(13)  THEN  GOTO 40
  63. 630  FOR B = 1 TO 48
  64. 640  IF AA$ = CR$(B)  THEN  GOSUB 390: GOTO 620
  65. 650  NEXT : GOTO 620
  66. 660  DATA A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
  67. 670  DATA 1,2,3,4,5,6,7,8,9,0
  68. 680  DATA .,",",?,-,":",;,(,/,WAIT,AR,SK,ERROR
  69. 690  DATA  01,1000,1010,100,0,0010,110,0000,00,0111,101,0100 
  70. 700  DATA 11,10,111,0110,1101,010,000,1,001,0001,011,1001,1011,1100
  71. 710  DATA 01111,00111,00011,00001,00000,10000,11000,11100,11110,11111
  72. 720  DATA 010101,110011,001100,10001,111000,101010,101101,10010,01000,01010,000101,00000000
  73. 990  REM ;CALIBRATE ROUTINE
  74. 1000  HOME 
  75. 1010 X = 0
  76. 1020  POKE F,F1: POKE D,D0: CALL TN: REM ;SEND DIT
  77. 1030  POKE F,F0, POKE D,D0: CALL TN: REM ;ELEMENT SPACE
  78. 1040 X = X +1: PRINT X;
  79. 1050  GOTO 1020
  80. 1060  REM ;CODE SPEED IN WORDS PER MINUTE=DOTS PER MIN / 25